package com.hundsun.cprs.yyt.service.goods.service;

import java.util.List;

import com.hundsun.cprs.yyt.service.goods.domain.query.GoodsQuery;
import com.hundsun.cprs.yyt.service.goods.dto.GoodsInfo;
/**
 * 商品接口
 * @author herong22384
 * @date 2019年2月18日
 *
 */
public interface GoodsService {
    /**
     * 商品新增
     * @param goodsInfo
     *
     * */
    public void createGoods(GoodsInfo goodsInfo);

    /**
     * 商品修改
     * @param goodsInfo
     *
     * */
    public void updateGoods(GoodsInfo goodsInfo);

    /**
     * 商品删除
     * @param goodsId
     *
     * */
    public void deleteGoods(int goodsId);

    /**
     * 分页查询商品列表
     * @param query
     *
     * */
    public void queryGoodsByPage(GoodsQuery query);
    
    
    /**
     * 返回商品列表
     * @param query
     * @return
     */
    public List<GoodsInfo> queryGoodsByList(GoodsQuery query);

    /**
     * 查询商品详情
     * @param goodsId,areaCode
     *
     * */
    public GoodsInfo selectGoodsInfoById(int goodsId,String areaCode);
    
    /**
     * 查询商品详情(缓存化仅对商品基本信息,sku信息,库存变更不在此维护)
     * @param goodsId
     * @param areaCode
     * @return
     */
    GoodsInfo selectGoodsInfoByIdFromCache(int goodsId,String areaCode);

    /**
     * 根据编码查询商品
     * @param goodsCode
     *
     * */
    List<GoodsInfo> selectGoodsByGoodsCode(String goodsCode);

    /**
     * 分页查询某个专区下的商品
     * @param query
     *
     * */
    void queryAreaGoodsList(GoodsQuery query);

    /**
     * 更改商品状态
     * @param goodsId,status
     *
     * */
    void updateGoodsStatus(Integer goodsId,String status);

    /**
     * 查询某个专区下未上架的商品
     *
     *
     * */
    void queryUnBindGoodsList(GoodsQuery query);

    /**
     * 查看商品的基本信息
     * @param goodsId
     *
     * */
    public GoodsInfo selectGoodsInfoById(int goodsId);

    /**
     * 分区查询专场下的商品列表（可专场和分类维度级联查询）前端接口使用
     * @param query
     *
     * */
    void queryGoodsPlateList(GoodsQuery query);

    /**
     * 填充商品图片列表
     * @param goodsInfoList
     *
     * */
    void fillGoodsImageList(List<GoodsInfo> goodsInfoList);

    /**
     * 分区查询分类下的商品列表 前端接口使用
     * @param query
     *
     * */
    void queryGoodsClassifyList(GoodsQuery query);

    void modifyGoods(GoodsInfo goods);

    GoodsInfo getGoodsInfoByGoodsCodeFromCache(String GoodsCode);
}
